/**
 * 
 */
package org.rk.core.common.util;

import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

/**
 * @author 曹仁道（cavion）
 * @email caorendao187@163.com
 * @描述：加载配置文件工具类，内存存储变量，监听变化时刷新
 * 2018年1月7日 下午8:22:53
 */
@Component
public class LoadPropSourceUtil {
	private final static Logger LOGER = LoggerFactory.getLogger(LoadPropSourceUtil.class);
	private static Map<String,String> propMap = new HashMap<String,String>();
	
	private static Environment env;
	
	@Autowired
	public LoadPropSourceUtil(Environment env) {
		LOGER.info("测试获取环境变量：" + env.getProperty("spring.datasource.url"));
		LoadPropSourceUtil.env = env;
	}
	/**
	 * 
	 * @author cavion
	 * @描述：初始化加载配置文件
	 * 2018年6月9日 下午10:10:53
	 */
	public void initLoadPropInfo() {
	}
	/**
	 * 
	 * @author cavion
	 * @描述：获取指定结果，没有返回""
	 * 2018年6月9日 下午10:13:43
	 * @param key
	 * @return
	 */
	public static String getValue(String key) {
		if(RkStrUtil.isEmpty(key)) {
			return "";
		}
		String propValue = propMap.get(key);
		if(RkStrUtil.isEmpty(propValue)) {
			propValue = env.getProperty(key);
			propMap.put(key, propValue);
		}
		if(RkStrUtil.isEmpty(propValue)) {
			propValue = "";
		}
		return propMap.get(key);
	}
	/**
	 * 
	 * @author cavion
	 * @描述：获取结果为空时，返回给定默认值
	 * 2018年6月9日 下午10:15:46
	 * @param key
	 * @param defaultValue
	 * @return
	 */
	public static String getValueForDefault(String key, String defaultValue) {
		String propValue = getValue(key);
		if(RkStrUtil.isEmpty(propValue)) {
			return defaultValue;
		}
		return propValue;
	}
}
